package com.hxk.ioc.config;

import com.hxk.ioc.bean.User;
import com.hxk.ioc.condition.LinuxCondition;
import com.hxk.ioc.condition.WindowsCondition;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;

/**
 * 使用@Conditional注解，按照一定的条件进行判断，满足条件给容器中注册bean
 *      本次模拟一个case为，当系统为Windows系统时，加入用户bill，当系统为Linux系统时，加入用户linus
 *  注解@Conditional还可以加在类上，如果加到类上，意为当满足条件spring ioc容器才加载该类
 *  //在VM options通过-Dos.name=linux设置运行环境
 */
@Configuration
//@Conditional(WindowsCondition.class)//判断为windows系统时加入该配置类
public class MainConfigConditional {

    @Conditional(WindowsCondition.class)//判断为windows系统时加入bill
    @Bean("bill")
    public User user01(){
        return new User("bill", 20);
    }

    @Conditional(LinuxCondition.class)//判断为linux系统时加入linus
    @Bean("linus")
    public User user02(){
        return  new User("linus",30);
    }
}
